#include "ParameterStore.h"
#include "tinyflashdb.h"

const tfdb_index_t Par_Store_index = {
    .end_byte = 0x00,
    .flash_addr = 0x8008000,
    .flash_size = 16384,
    .value_length = sizeof(PARAMETER_STORE_DPT)};

uint8_t raw_buf_Par[TFDB_ALIGNED_RW_BUFFER_SIZE(sizeof(PARAMETER_STORE_DPT), 4)]; // __attribute__((at(0x20001FF0))); /*aligned_value_size*/

void set_ota_status(PARAMETER_STORE_DPT *PS, char *str)
{
    memset(&PS->OTA_STATUS[0], 0, sizeof(PS->OTA_STATUS));
    strcpy((char *)&PS->OTA_STATUS[0], str);
} 

void Par_data_store_init(PARAMETER_STORE_DPT *PS)
{
    int ret;
    ret = Par_data_store_read(PS);
    if (ret == 0)
    {
        return;
    }
    else
    {
        Par_data_store_write(PS);
    }
}
int Par_data_store_read(PARAMETER_STORE_DPT *PS)
{
    TFDB_Err_Code result;
    tfdb_addr_t addr = 0; /*addr cache*/
    result = tfdb_get(&Par_Store_index, raw_buf_Par, &addr, &PS->OTA_STATUS[0]);
    return result;
}
int Par_data_store_write(PARAMETER_STORE_DPT *PS)
{
    TFDB_Err_Code result;
    tfdb_addr_t addr = 0; /*addr cache*/
    result = tfdb_set(&Par_Store_index, raw_buf_Par, &addr, &PS->OTA_STATUS[0]);
    return result;
}
